package cn.source.zk.mapper;

import cn.source.zk.domain.entity.Area;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ZkAreaMapper {

    /**
     * 查询地区列表
     * @param area
     * @return
     */
    List<Area> selectAreaList(Area area);

    /**
     * 检查地区名称是否存在
     * @param name
     * @param parentId
     * @return
     */
    Area checkAreaNameUnique(@Param("name") String name, @Param("parentId") Long parentId,@Param("code") String code);

    /**
     * 插入地区
     * @param area
     * @return
     */
    int insertArea(Area area);

    /**
     * 根据id查询地区
     * @param num
     * @return
     */
    Area selectById(@Param("num") Long num);

    /**
     * 修改地区
     * @param area
     * @return
     */
    int updateArea(Area area);

    /**
     * 删除地区
     * @param num
     */
    int remove(@Param("num") Long num);

    /**
     * 是否存在下级地区
     * @param num
     * @return
     */
    int hasChildByNum(Long num);

    /**
     * 根据num查询祖级列表
     * @param num
     * @return
     */
    String getAncestor(Long num);

    /**
     * 获取祖级名称列表
     * @param ancestorArray
     * @return
     */
    List<String> getNameByAncestor(@Param("ancestorArray") String[] ancestorArray);

    /**
     *
     * @param num
     */
    List<Long> getChildIds(@Param("num") Long num);

    List<Area> setAreaByAncestorsIsNull();
}
